<!DOCTYPE html>
<!--
 Copyright (c) 2010 - 2019 Profactor GmbH, TU Wien ACIN, fortiss GmbH
               2019 Johannes Kepler University Linz
               2019 Andrea Zoitl
  
 This program and the accompanying materials are made available under the
 terms of the Eclipse Public License 2.0 which is available at
 http://www.eclipse.org/legal/epl-2.0.

 SPDX-License-Identifier: EPL-2.0
 
 Contributors:
   Gerhard Ebenhofer, Thomas Strasser, Monika Wenger, Alois Zoitl, 
   Gerd Kainz, Jose Cabral 
     - initial API and implementation and/or initial documentation
   Bianca Wiesmayr, Alois Zoitl
   	 - text corrections and clean-up
   Andrea Zoitl
     - improved readability, updated Help ToC
-->

<html lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<title>Eclipse 4diac Framework</title>
	<link rel="stylesheet" type="text/css" href="../help.css">
</head>
<body>

<p id="topOfPage">To understand what's next, you need to know IEC 61499. 
If you did not read the following page yet, go there now: <a href="../../html/before4DIAC/iec61499.html">IEC&nbsp;61499 101</a></p>

<!--********************************************************************************************-->

<h1 id="iec61499Framework">4diac Framework</h1>

<p>This section outlines the big picture from the design to actually controlling physical units.</p>

<p>As shown in the IEC&nbsp;61499 explanation, an application developed using this standard uses Function Blocks (FB). 
There are ways of creating and defining FBs, but at some point in the workflow ranging from FBs to actually controlling something physical, the logic behind the FBs and the FB networks has to be implemented. 
That's where the runtime environment comes in. 
This software loads the network of FBs and then executes the events and follows the rules of the standard like the one seen <a href="../../html/before4DIAC/iec61499.html#FBInternalSequence" target="_blank">here</a>. </p>

<p>So, where is the runtime environment in the standard? Nowhere directly.
For executing the distributed control applications modeled with IEC&nbsp;61499 the standard defines the device model containing resources, the FB execution model, and the management model allowing tools to configure devices. 
This is what a runtime environment provides.
In the next image, the idea behind decoupling the application development and the execution is presented.</p>

<img class="center" src="../../html/before4DIAC/img/iec61499Framework.png" alt="IEC 61499 framework" />

<p>The rectangle on the top represents the system according to IEC&nbsp;61499. 
Here, you need a tool that allows creating FBs and connecting them. 
Also, it should represent the devices of your system, and some method to show the part of your application which will be deployed to each device. 
This is usually done on a normal computer.</p>

<p>The big squares in the second row represent real devices such as PLCs, control hardware, or a Raspberry Pi. 
In these devices, the mentioned runtime environment needs to run. 
It receives information from the top rectangle to create the network of FBs, execute FBs, send events between FBs, and so on. 
The devices normally have inputs and outputs which are accessed by the runtime environment.</p>

<!--********************************************************************************************-->

<h1 id="4diacFramework">Components of Eclipse 4diac</h1>

<p>Eclipse 4diac provides two main components for developing and executing distributed control systems compliant to the IEC&nbsp;61499 standard:</p>
<ul>
	<li><span class="inlineTitle">4diac FORTE</span> is a small portable C++ implementation of an IEC&nbsp;61499 runtime environment which supports executing IEC 61499 FB networks on small embedded devices. 
	4diac FORTE typically runs on top of a (real-time) OS. 
	4diac FORTE is a multi-threaded and low memory-consuming runtime environment. 
	It has been tested on several different operating systems, for example, Windows, Linux (i386, amd64, ppc, xScale, arm), NetOS, eCos, rcX from Hilscher, vxWorks, and freeRTOS.  
	</li>
	<li><span class="inlineTitle">4diac&nbsp;IDE:</span> is an integrated development environment written in Java, based on the Eclipse framework. 
	   It provides an extensible engineering environment for modeling distributed control applications compliant to the IEC&nbsp;61499 standard. 
	   You use 4diac IDE to create FBs, applications, configure the devices and other tasks related to IEC&nbsp;61499.
	   Within 4diac IDE, these results can also be deployed to devices running 4diac FORTE or other compliant run-time environments.</li>
</ul>

<p>
Because the development of systems according to IEC&nbsp;61499 and the runtime environment are decoupled, some things have to be taken into account. 
As described, you can create FBs in the IDE. 
At this point, however, the runtime environment doesn't know that the FB exists nor how to execute it. 
Within 4diac IDE, you therefore have the possibility to export your created FB into 4diac&nbsp;FORTE code (i.e., C++ files). 
You then need to add your exported code to the source code of 4diac&nbsp;FORTE and compile all as explained in the <a href="../../html/installation/install.html#4DIAC-FORTE">Compile 4diac FORTE</a> section of the installation documentation.
This is possible only for Basic and Composite Function Blocks (BFB and CFB), since both definitions are in the standard.
However, for Service Function Blocks (SIFBs) only the interface is defined.
The internal implementation of an SIFB has to be coded manually in C++, the language 4diac&nbsp;FORTE is written in.</p>

<!--********************************************************************************************-->

<h1>Human Machine Interface</h1>

<p>4diac FORTE is intended to run in PLCs, so a Graphical User Interface (GUI) as Human Machine Interface (HMI) is not supported. 
Therefore, for providing HMIs for your control solutions developed in Eclipse 4diac, you need external components. 
4diac FORTE features a set of different communication protocols which allow to interact with such external HMI components.
Currently, the most commonly used protocols are MQTT or OPC UA.

<!--********************************************************************************************-->

<h1>Where to go from here?</h1>

<p>Now that you have a better understanding of the IEC&nbsp;61499 standard, and know about the tools around Eclipse 4diac, is time to start using them. 
Take a look at the following page:</p>

<p><a href="../../html/installation/install.html">Installation</a></p>

<p>If you want to go back to the Where to Start page, we leave you here a fast access:</p>

<p><a href="../../html/startHere/startHere.html">Where to Start</a></p>

<p class="goToTop">Or <a href="#topOfPage">Go to top</a></p>

</body>
</html>